package com.zkthink.ceres.order.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 区块链所需订单子信息
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@Builder
@ApiModel(value = "SonOrdeBassDTO", description = "用户子订单")
public class SonOrdeBassDTO implements Serializable {
    private static final long serialVersionUID = 1L;


    private Long id;

    /**
     * 店铺id
     */
    @ApiModelProperty(value = "店铺id")
    private Long storeId;

    /**
     * 会员id
     */
    @ApiModelProperty(value = "会员id")
    private Long mid;

    /**
     * 父订单主键id
     */
    @ApiModelProperty(value = "父订单主键id")
    @NotNull(message = "父订单主键id不能为空")
    private Long parentId;

    /**
     * 发货时所用的物流公司的名称
     */
    @ApiModelProperty(value = "发货时所用的物流公司的名称")
    private String logisticsName;

    /**
     * 发货物流单号
     */
    @ApiModelProperty(value = "发货物流单号")
    private String logisticsNum;


    /**
     * 省份
     */
    @ApiModelProperty(value = "省份")
    private String province;


    /**
     * 城市
     */
    @ApiModelProperty(value = "城市")
    private String city;


    /**
     * 地区
     */
    @ApiModelProperty(value = "地区")
    private String district;


    /**
     * 详细地址
     */
    @ApiModelProperty(value = "详细地址")
    private String address;

    /**
     * 收货人名称
     */
    @ApiModelProperty(value = "收货人名称")
    private String recName;

    /**
     * 收货人电话
     */
    @ApiModelProperty(value = "收货人电话")
    private String recMobile;

    /**
     * 运费
     */
    @ApiModelProperty(value = "运费")
    private Long postFee;

    /**
     * 订单金额
     */
    @ApiModelProperty(value = "订单金额")
    private Long orderSum;

    /**
     * 订单消费金额
     */
    @ApiModelProperty(value = "订单消费金额")
    private Long discountAmount;

    /**
     * 支付金额
     */
    @ApiModelProperty(value = "支付金额")
    private Long paySum;

    /**
     * 发货时间
     */
    @ApiModelProperty(value = "发货时间")
    private LocalDateTime sendTime;

    /**
     * 确认收货的时间
     */
    @ApiModelProperty(value = "确认收货的时间")
    private LocalDateTime confirmTime;

    /**
     * 下单时的备注
     */
    @ApiModelProperty(value = "下单时的备注")
    private String notes;

    /**
     * 支付方式 1-微信支付 2-支付宝支付
     */
    @ApiModelProperty(value = "支付方式 1-微信支付 2-支付宝支付")
    private String payChannelDesc;

    @ApiModelProperty("用户子订单下的商品列表")
    private List<OrderProductBassDTO> orderProductBassDTO;

}
